Registers are one common form of storage used in digital computing systems such as microprocessors. In many such systems, especially in systems intended for control-oriented applications, certain registers control the functionality of certain subsystems. A very simple example is a microprocessor which includes a subsystem for counting the number of pulses of an input signal, commonly referred to as a pulse accumulator subsystem. A control register for the pulse accumulator subsystem might contain an enable bit at a particular location. Such an enable bit would, under software control, determine whether the pulse accumulator is enabled to count pulses or is disabled. Many control bits act not to enable or disable a subsystem, but to select among one or more alternate modes of operation. For instance, another control bit in the pulse accumulator control register described above might determine whether the pulse accumulator counts each pulse of the incoming signal or counts only every other pulse.
Particularly in the case of control bits which select among various modes of operation, some care must be taken in using the system to assure that changes in the setting of the control bits occur at an appropriate time. Typically, the burden of assuring a proper transition between modes of operation is placed on the designer of the software which will control the operation of the system. However, as the number of semi-autonomous subsystems which can be integrated into a single integrated circuit microprocessor increases, each of which may have mode control bits in registers, this burden on the software can become too great. In addition, it is possible that insufficient time may exist in some application to permit software to recognize and react to the requirement for a mode change.